<?php

namespace Seguridad\Controller;

use Seguridad\Controller\GenericController;
use Componentes\Controller\UtilsArrayController;
use Seguridad\Controller\Service\UsuarioService;

class UsuarioController extends GenericController {

    public function __construct() {
        
    }

    //INCOMPLETO
    public function get($id) {
        /*
         * Datos del usuario COMPLETO (con el grupo)
         * Ej: http://localhost/UptaebBackend/public/seguridad/usuario/1
         * Rsp: {"success":true,"data":[{"id":1,"login":"07443224","password":"123","estado":1,"_grupo":{"id":1,"nombre":"Estudiante","detalle":"Estudiantes activos"}}],"total":1}
         */
        $id = $this->params()->fromRoute('id');
        $output = $this->getUsuarioService()->getRegistroCompleto($id);
        return $this->convertirArrayAJson($output);
    }

    /**
     * Return list of resources
     * @return mixed
     */
    public function getList($id = 1, $param1 = 1, $param2 = 1, $param3 = 1) {
        $id = $this->params()->fromRoute('id');
        $param1 = $this->params()->fromRoute('param1');
        $data = null;
        $mensaje = "Defaul";
        switch ($id) {
            case (0):
                /*
                 * Datos del usuario sin los objetos foraneos (Solo Ids)
                 * Ej: http://localhost/UptaebBackend/public/seguridad/usuario/0/1
                 * Rsp: {"success":true,"data":[{"id":"1","login":"00018949","password":"00018949","_bloqueo":"1","_persona":"1"}],"total":1,"mensaje":null}
                 */
                $id = $this->params()->fromRoute('param1');
                $output = $this->getUsuarioService()->getRegistro($id);
                break;
            case (1):
                /*
                 * Datos del usuario dado el login
                 * Ej: http://localhost/UptaebBackend/public/seguridad/usuario/1/19324968
                 * Rsp: {"success":true,"data":[{"id":"36546","login":"19324968","password":"19324968","id_bloqueo":"1","id_persona":"36546"}],"total":1,"mensaje":null}
                 */
                $login = $this->params()->fromRoute('param1');
                $registros = $this->getUsuarioService()->getUsuarioSegunLogin($login);
                $data = UtilsArrayController::llenarData($registros);
                $output = UtilsArrayController::organizarOutput(true, $data, null);
                break;
            case (2): //INCOMPLETO
                /*
                 * Valida el usuario
                 * Si el usuario es valido retorna los datos del grupo a cual pertenece
                 * Ej: http://localhost/UptaebBackend/public/seguridad/usuario/2/15598390/15598390
                 * Rsp: {"success":true,"data":[{"id":1,"nombre":"Estudiante","detalle":"Estudiantes activos"}],"total":1,"mensaje":"INICIO DE SESION EXITOSA"}
                 */
                $login = $this->params()->fromRoute('param1');
                $password = $this->params()->fromRoute('param2');
                $output = $this->getUsuarioService()->validarUsuario($login, $password);
                break;
            default:
                return $param1;
        }
        return $this->convertirArrayAJson($output);
    }

    /**
     * Delete an existing resource
     * @param  mixed $id
     * @return mixed
     */
//    public function delete($id) {
//        // obtener el id del registro
//        $id = $this->params()->fromRoute('id');
//        // Eliminar el registro
//        //$alumno_service = new \Seguridad\Controller\Service\AlumnoService($this->getServiceLocator()->get('db'));
//        $usuario_service = Service\UsuarioService::getInstance();
//        $result = $usuario_service->deleteRegistro($id);
//        $response = $this->getResponseWithHeader();
//        $response->setContent($result);
//        return $response;
//    }

    /**
     * Update an existing resource
     * @param  mixed $id
     * @param  mixed $data
     * @return mixed
     */
//    public function updateAction() {
//        $id = $this->params()->fromRoute('id');
//        $estado = $data = (string) $this->params()->fromRoute('id2');
//        $turno = $data = (string) $this->params()->fromRoute('id3');
//        $data = array('salumestado' => $estado, 'turno' => $turno);
//        $result = $this->getUsuarioService()->updateRegistro($id, $data);
//        $response = $this->getResponseWithHeader();
//        $response->setContent($result);
//        return $response;
//    }

    /**
     * Create a new resource
     * @param  mixed $data
     * @return mixed
     */
//    public function create($data) {
//        $data = $this->params()->fromPost();
//        // Guardar el registro
//        $usuario_service = new Service\UsuarioService($this->getServiceLocator()->get('Zend\Db\Adapter'));
//        $result = $usuario_service->createRegistro($data);
//        $response = $this->getResponseWithHeader();
//        $response->setContent($result);
//        return $response;
//    }
}
